package com.wf.ew.sell.service.impl;

import com.wf.ew.common.JsonResult;
import com.wf.ew.common.PageResult;
import com.wf.ew.sell.biz.EntryBillSonBiz;
import com.wf.ew.sell.model.EntryBillSon;
import com.wf.ew.sell.model.OutBillSon;
import com.wf.ew.sell.model.Sell;
import com.wf.ew.sell.service.EntryBillSonService;
import com.wf.ew.system.model.User;
import com.wf.ew.sell.biz.EntryBillBiz;
import com.wf.ew.sell.model.EntryBill;
import com.wf.ew.sell.service.EntryBillService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;

/**
 *
 * 数据服务层接口实现类
 * @author : Doman
 * @date : 2019-11-24 00:07:19
 * @version ：1.0
 */
@Service
public class EntryBillServiceImpl implements EntryBillService {

	@Autowired
	private EntryBillBiz entryBillBiz;
	@Autowired
	private EntryBillSonBiz entryBillSonBiz;
	@Autowired
	private EntryBillSonService entryBillsonService;

	@Override
	public String list(PageResult<T> page, EntryBill entryBill, EntryBillSon entryBillSon,User loginUser) {
		return entryBillBiz.list(page,entryBill,entryBillSon,loginUser);
	}
	
	@Override
	public List<EntryBill> list(EntryBill entryBill, User loginUser) {
		return entryBillBiz.list(entryBill,loginUser);
	}

	@Override
	public EntryBill getById(EntryBill entryBill) {
		return entryBillBiz.getById(entryBill);
	}

	@Override
	public JsonResult add(EntryBill entryBill, User loginUser) {
		KeyHolder key= entryBillBiz.add(entryBill, loginUser);
		int keyid = key.getKey().intValue();
		if (keyid>0) {
			return JsonResult.ok("添加成功").put("keyid",keyid);
		}
		return JsonResult.error("添加失败");
	}

	@Override
	public JsonResult update(EntryBill entryBill, User loginUser) {
		if (entryBillBiz.update(entryBill, loginUser)) {
			return JsonResult.ok("修改成功");
		}
		return JsonResult.error("修改失败");
	}
	@Override
	public JsonResult updateState(EntryBill entryBill, User loginUser) {
		if (entryBillBiz.updateState(entryBill, loginUser)) {
			return JsonResult.ok("修改成功");
		}
		return JsonResult.error("修改失败");
	}

	@Override
	public JsonResult updateTotal(EntryBill entryBill, User loginUser) {
		if (entryBillBiz.updateTotal(entryBill, loginUser)) {
			return JsonResult.ok("修改成功");
		}
		return JsonResult.error("修改失败");
	}

	@Override
	public JsonResult delete(EntryBill entryBill, User loginUser) {
		if (entryBillBiz.delete(entryBill, loginUser)) {
			return JsonResult.ok("删除成功");
		}
		return JsonResult.error("删除失败");
	}

	@Transactional
	@Override
	public JsonResult deleteEntryAndSon(EntryBill entryBill, User loginUser) {
		EntryBillSon entryBillSon = null;
		String[] ids = entryBill.getIds().split(", ");
		if (ids != null && ids.length > 0) {
			for (int j = 0; j < ids.length; j++) {
				entryBillSon = new EntryBillSon();
				entryBillSon.setEntryBillId(ids[j]);
				List<EntryBillSon> list = entryBillSonBiz.list(entryBillSon, loginUser);
				if (list != null && list.size() > 0) {
					for (int i = 0; i < list.size(); i ++) {
						entryBillSon = list.get(i);
						entryBillSon.setIds(entryBillSon.getId());
						entryBillsonService.delete(entryBillSon, loginUser);
					}
				}
			}
		}
		if (entryBillBiz.delete(entryBill, loginUser)) {
			return JsonResult.ok("删除成功");
		}
		return JsonResult.error("删除失败");
	}
}
